1. Field Of The Invention
The present invention relates to the field of multi-processor computer systems. Specifically, the present invention relates to multi-processor computer systems using a local cache.
2. Prior Art
Conventional multi-processor computer systems comprise a plurality of processors all sharing a common memory. These processors can be coupled with the shared memory in a variety of architectural structures. In general, each processor may access the shared memory for the purpose of writing information into the shared memory or reading information therefrom. Because access to a shared memory may be a relatively slow operation, conventional multi-processor systems typically employ the use of a local cache for each processor of the multi-processor system. Thus, each multi-processor has a separate local cache associated with the processor. Each local cache is a small high speed memory for the temporary storage of information that has been transferred between the processor and shared memory. The use of a local cache is intended to reduce the number of accesses between a processor and shared memory. For each access to shared memory, a block of shared memory may be retrieved and stored in the local cache associated with a processor. The processor may then manipulate the data stored in the local cache at a higher rate of speed than possible with repeated access to shared memory.
Although the use of a local cache increases processor throughput, additional control functions for maintaining the local cache are necessary. For example, one such control function is maintaining cache consistency across a multi-processor system. Because a copy of a portion of shared memory may be maintained within the local cache for any or all processors of the multi-processor system, the contents of each local cache must be made and kept consistent with the corresponding memory locations within shared memory. For example, if one processor modifies a location in its local cache, the corresponding location in shared memory as well as the corresponding location in other local caches must be updated accordingly. Thus, if two or more processors have copies of the same data item in their local cache, there must be a means of ensuring that any modifications to one copy of the data item are duplicated into the other processors having copies of that data item in their local cache.
The conventional method for ensuring consistency between the local caches of processors in a multi-processor system is called snooping. Snooping is a cache control operation performed in conventional multi-processor computer systems. For each reference to a local cache location that may be duplicated in the local cache of another processor, the snooping operation is used to: 1) determine which other local caches contain copies of the referenced item; and 2) to make the location of the referenced item consistent throughout all local caches of the system. Snooping is a required task in any multi-processor computer system having multiple caches. In most conventional multi-processor computer systems, the snooping operation is performed on every memory reference that may be a reference to a location in a local cache.
Although snooping is required for cache consistency, the snooping operation is a relatively slow operation. In fact, snooping often takes more time than a memory reference itself. Snooping consumes a relatively large percentage of a processor's computational bandwidth. For this reason, it is advantageous to minimize the number of times that the snooping operation is performed. Prior art systems, however, cannot minimize the frequency of the snooping operation without risking cache inconsistency problems.
Thus, a better means and method is needed for optimizing the operation of cache control functions.